let activeEffect;
class Dep {
  subs = new Set();
  depend() {
    // 依赖收集
    if (activeEffect) {
      this.subs.add(activeEffect);
    }
  }
  notify() {
    // 触发依赖
    this.subs.forEach((effect) => {
      effect();
    });
  }
}

function watchEffect(effect) {
  activeEffect = effect;
  effect();
  activeEffect = null; // 保证了activeEffect只被收集一次
}

const dep = new Dep();

// 第一次watch时，内层函数也会执行一遍
watchEffect(() => {
  dep.depend();
  console.log("被监听函数-调用1");
});

watchEffect(() => {
  dep.depend();
  console.log("被监听函数-调用2");
});

dep.notify(); // 触发依赖
